﻿#include "pch.h"
#include "LogonWindow.h"
#include "Protocol.h"
#include "Resource.h"

/**
 * 构造方法。
 * @param parent    父窗口
 */
LogonWindow::LogonWindow(CWnd* parent): 
    CDialog(IDD_LOGON_WINDOW, parent) {
}

/**
 * 获取密码。
 * @return 密码
 */
LPCTSTR LogonWindow::GetPassword() {
    return mPassword;
}

/**
 * 获取用户名。
 * @return 用户名
 */
LPCTSTR LogonWindow::GetUsername() {
    return mUsername;
}

/**
 * 初始化事件的响应方法。
 * @return 总是 TRUE
 */
BOOL LogonWindow::OnInitDialog() {
    CDialog::OnInitDialog();

    // 设置最大用户名长度和最大密码长度
    CEdit* editUsername = (CEdit*)CDialog::GetDlgItem(IDC_EDIT_USERNAME);
    editUsername->SetLimitText(ImProtocol::MAX_USERNAME_LEN);
    CEdit* editPassword = (CEdit*)CDialog::GetDlgItem(IDC_EDIT_PASSWORD);
    editPassword->SetLimitText(ImProtocol::MAX_PASSWORD_LEN);

    return TRUE;
}

/**
 * "确定"按钮的单击响应方法。
 */
void LogonWindow::OnOK() {
    // 检查用户名是否为空
    CString username;
    CDialog::GetDlgItemText(IDC_EDIT_USERNAME, username);
    if (username.IsEmpty()) {
        AfxMessageBox(IDS_USERNAME_EMPTY, MB_ICONERROR);
        CDialog::GetDlgItem(IDC_EDIT_USERNAME)->SetFocus();
        return;
    }

    // 检查密码是否为空
    CString password;
    CDialog::GetDlgItemText(IDC_EDIT_PASSWORD, password);
    if (password.IsEmpty()) {
        AfxMessageBox(IDS_PASSWORD_EMPTY, MB_ICONERROR);
        CDialog::GetDlgItem(IDC_EDIT_PASSWORD)->SetFocus();
        return;
    }

    // 保存用户名、密码
    mUsername = username;
    mPassword = password;

    // 关闭窗口
    CDialog::OnOK();
}
